#pragma once



#if defined(__APPLE__)
  #define USK_PLATFORM_APPLE
#endif

#if defined(__linux__)
  #define USK_PLATFORM_LINUX
#endif

#if defined(_WIN32) || defined(_WIN64)
  #define USK_PLATFORM_WINDOWS
#else
  #define USK_PLATFORM_POSIX
#endif

#ifdef NDEBUG // Defined by cmake UNLESS Debug build type is chosen
#define US_LIB_POSTFIX ""
#else
#define USK_LIB_POSTFIX "d" // Set in top level CMakeList.txt
#endif


#if defined(USK_PLATFORM_WINDOWS)
  #define USK_ABI_EXPORT __declspec(dllexport)
  #define USK_ABI_IMPORT __declspec(dllimport)
  #define USK_ABI_LOCAL
#elif defined(USK_HAVE_VISIBILITY_ATTRIBUTE)
  #define USK_ABI_EXPORT __attribute__ ((visibility ("default")))
  #define USK_ABI_IMPORT __attribute__ ((visibility ("default")))
  #define USK_ABI_LOCAL  __attribute__ ((visibility ("hidden")))
#else
  #define USK_ABI_EXPORT
  #define USK_ABI_IMPORT
  #define USK_ABI_LOCAL
#endif

#define USK_STR_(x) #x
#define USK_STR(x) USK_STR_(x)
#define USK_CONCAT_(x,y) x ## y
#define USK_CONCAT(x,y) USK_CONCAT_(x,y)
